package com.wgh.product.converter;

import com.wgh.product.dto.ProductAttributeValueDTO;
import com.wgh.product.entity.shop.ProductAttributeValue;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 商品属性值转换器
 * 用于ProductAttributeValue实体和ProductAttributeValueDTO之间的转换
 */
@Component
public class ProductAttributeValueConverter {

    /**
     * 将ProductAttributeValue实体转换为ProductAttributeValueDTO
     * @param productAttributeValue ProductAttributeValue实体
     * @return ProductAttributeValueDTO
     */
    public ProductAttributeValueDTO toDTO(ProductAttributeValue productAttributeValue) {
        if (productAttributeValue == null) {
            return null;
        }
        
        ProductAttributeValueDTO productAttributeValueDTO = new ProductAttributeValueDTO();
        productAttributeValueDTO.setId(productAttributeValue.getId());
        productAttributeValueDTO.setAttributeId(productAttributeValue.getAttributeId());
        productAttributeValueDTO.setValue(productAttributeValue.getValue());
        productAttributeValueDTO.setCategoryId(productAttributeValue.getCategoryId());
        productAttributeValueDTO.setSort(productAttributeValue.getSort());
        productAttributeValueDTO.setCreateTime(productAttributeValue.getCreateTime());
        productAttributeValueDTO.setUpdateTime(productAttributeValue.getUpdateTime());
        
        return productAttributeValueDTO;
    }
    
    /**
     * 将ProductAttributeValueDTO转换为ProductAttributeValue实体
     * @param productAttributeValueDTO ProductAttributeValueDTO
     * @return ProductAttributeValue实体
     */
    public ProductAttributeValue toEntity(ProductAttributeValueDTO productAttributeValueDTO) {
        if (productAttributeValueDTO == null) {
            return null;
        }
        
        ProductAttributeValue productAttributeValue = new ProductAttributeValue();
        productAttributeValue.setId(productAttributeValueDTO.getId());
        productAttributeValue.setAttributeId(productAttributeValueDTO.getAttributeId());
        productAttributeValue.setValue(productAttributeValueDTO.getValue());
        productAttributeValue.setCategoryId(productAttributeValueDTO.getCategoryId());
        productAttributeValue.setSort(productAttributeValueDTO.getSort());
        
        return productAttributeValue;
    }
    
    /**
     * 将ProductAttributeValue实体列表转换为ProductAttributeValueDTO列表
     * @param productAttributeValues ProductAttributeValue实体列表
     * @return ProductAttributeValueDTO列表
     */
    public List<ProductAttributeValueDTO> toDTOList(List<ProductAttributeValue> productAttributeValues) {
        if (productAttributeValues == null || productAttributeValues.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductAttributeValueDTO> productAttributeValueDTOs = new ArrayList<>();
        for (ProductAttributeValue productAttributeValue : productAttributeValues) {
            productAttributeValueDTOs.add(toDTO(productAttributeValue));
        }
        
        return productAttributeValueDTOs;
    }
    
    /**
     * 将ProductAttributeValueDTO列表转换为ProductAttributeValue实体列表
     * @param productAttributeValueDTOs ProductAttributeValueDTO列表
     * @return ProductAttributeValue实体列表
     */
    public List<ProductAttributeValue> toEntityList(List<ProductAttributeValueDTO> productAttributeValueDTOs) {
        if (productAttributeValueDTOs == null || productAttributeValueDTOs.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductAttributeValue> productAttributeValues = new ArrayList<>();
        for (ProductAttributeValueDTO productAttributeValueDTO : productAttributeValueDTOs) {
            productAttributeValues.add(toEntity(productAttributeValueDTO));
        }
        
        return productAttributeValues;
    }
}